package com.chat.login.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chat.login.domain.dto.*;
import com.chat.common.entity.User;
import com.chat.common.vo.R;
import com.chat.login.domain.vo.LoginUserVO;
import com.chat.login.domain.vo.VersionNumberVO;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author weikjie
 * @since 2024-03-08
 */
public interface IUserService extends IService<User> {

    /**
     * 用户登录
     * @param loginUserDto
     * @return
     */
    R<LoginUserVO> login(LoginUserDTO loginUserDto);

    /**
     * 用户注册
     * @param registerUserDto
     * @return
     */
    R<String> register(RegisterUserDTO registerUserDto);

    /**
     * 激活账号
     * @param account
     * @return
     */
    R validateAccount(String account);

    /**
     * 退出登录
     * @return
     * @param token
     */
    R loginOff(String token);

    /**
     * 根据账号获取邮箱
     * @param account
     * @return
     */
    String getMailOfAccount(String account);

    /**
     * 重置密码
     * @param forgotPasswordDTO
     * @return
     */
    R resetPassword(ForgotPasswordDTO forgotPasswordDTO);

    /**
     * 用户申述
     * @param userAppealDTO
     * @return
     */
    R userAppeal(UserAppealDTO userAppealDTO);

    /**
     * 获取冻结原因
     * @param account
     * @return
     */
    R getAccountDisable(String account);

    /**
     * 根据账号获取当前用户的反馈列表
     * @param account
     * @return
     */
    R getAccountUserFeedbackList(String account);

    /**
     * 添加一条用户反馈
     * @param userFeedbackDTO
     * @return
     */
    R addOneUserFeedback(UserFeedbackDTO userFeedbackDTO);

    /**
     * 获取最新版本的版本号
     * @return
     */
    R<VersionNumberVO> getNewVersion();
}
